var path = require("path");
var fs = require("fs");
var webpack = require('webpack');
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('pub.js');
var pubpath = "./script/src/";
module.exports = {
    //插件项
    plugins: [commonsPlugin],
    //页面入口文件
    entry: getAllEntry(),
    //入口文件输出配置
    output: {
        path: "./runtime",
        filename: '[name].js',
        sourceMapFilename: "[file].map.js"
    },
    minimize: true,
    module: {
        loaders: [{
            test: /\.tpl/,
            loader: "art-template-loader"
        },{
          test:/\.(png|jpg|gif|bmp)$/,
          loader: "url-loader?limit=8192"
        }
      ]
    },
    //其它解决方案配置
    // devtool: "source-map",
    resolve: {
        extensions: ['', '.js', '.tpl']
    }
};


function getAllEntry() {
    var filePath = path.resolve('./', 'pages');
    var entrys = {};
    var matchs = [];
    fileDisplay(filePath,entrys,matchs);
    return entrys;
}

/**
 * 文件遍历方法
 * @param filePath 需要遍历的文件路径
 */
function fileDisplay(filePath, entrys, matchs){
    var filePath1 = path.resolve('./', 'pages');
    //根据文件路径读取文件，返回文件列表
    var dirs = fs.readdirSync(filePath);
    //遍历读取到的文件列表
    dirs.forEach(function(filename){
        //获取当前文件的绝对路径
        var filedir = path.join(filePath,filename);
        //console.log(filedir);
        //根据文件路径获取文件信息，返回一个fs.Stats对象
        var stats = fs.lstatSync(filedir);
        var isFile = stats.isFile();//是文件
        var isDir = stats.isDirectory();//是文件夹
        if(isFile){
            matchs = filename.match(/(.+)\.js$/);
            if (matchs) {
                var _key = filePath.replace(filePath1, '');
                //如果是head，默认加上前缀
                if(matchs[1]=='head') {
                    _key += '_head';
                }
                entrys[_key] = filedir;
            }
        }
        if(isDir){
            fileDisplay(filedir,entrys,matchs);//递归，如果是文件夹，就继续遍历该文件夹下面的文件
        }
    });
}

function getEntry() {
    var jsPath = path.resolve(pubpath, 'page');
    var dirs = fs.readdirSync(jsPath);
    var matchs = [],
        files = {};
    dirs.forEach(function(item) {
        matchs = item.match(/(.+)\.js$/);
        if (matchs) {
            files[matchs[1]] = path.resolve(pubpath, 'page', item);
        }
    });
    console.log(files);
    return files;
}
